<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
    <script src="jquery.js" ></script>
    <script>
       $(function(){
           
           //var targetObj={};
           //var obj={
           //    id:1,
           //    name:"andy"
           //};
           
           //浅拷贝
           //将obj的基础类型copy到targetObj中
           //$.extend(targetObj,obj);
           //targetObj.id=200;
           //修改targetObj不会影响到obj对象
           //console.log(targetObj);
           //console.log(obj);


          //目标对象有冲突(这里指的是id),则覆盖
          /*  var targetObj={
                id:0
           };

           var obj={
                id:1,
                name:"andy"
           };

           $.extend(targetObj,obj);
           console.log(targetObj); */

           //浅拷贝:对象中存在引用类型
           var targetObj={
                id:0,
                msg:{
                    sex:'男'
                }
           };

           var obj={
                id:1,
                name:"andy",
                msg:{
                    age:18
                },
                arr:[1,2,3]
           };

           //$.extend(targetObj,obj);
           // 浅拷贝的情况下,将obj里的msg的内存地址 拷贝给了 targetObj里的msg,所以打印输出msg只有age
           //console.log(targetObj);
           // 1. 浅拷贝把原来对象里面的复杂数据类型地址拷贝给目标对象
           //修改一个对象里面复杂数据类型,会造成另一个对象也发生改变
           //targetObj.msg.age=20;
           //targetObj.arr[0]=100;
           //console.log(targetObj);
           //console.log(obj);

           // 2. 深拷贝把里面的数据完全复制一份给目标对象 如果里面有不冲突的属性,会合并到一起
           $.extend(true,targetObj,obj);
           //console.log(targetObj);
           //由于不是地址的拷贝,所有修改一个对象不会影响另一个对象的值
           targetObj.msg.age=20;
           targetObj.arr[0]=200;
           console.log(targetObj); //msg:{sex:'男',age:20}
           console.log(obj);
       });
    </script>
</head>
<body>
    <div></div>
</body>
</html>